package modelo;

import modelo.Funcionario;
import java.sql.*;
import java.util.Vector;

public class DAOFunc extends DAO {

 
    public static Vector listarFunc() throws Exception {
        abrirConexao();
        //String SQL = "Select * from TabFuncionario,TabDepto WHERE codigo=codigodepto";
        String SQL = "Select *,d.nome as nomed from TabFuncionario as t,TabDepto as d WHERE d.codigo=t.codigodepto";
        Vector grupo = new Vector();
        Statement stmt = con.createStatement();
        ResultSet rst = stmt.executeQuery(SQL);
        
        // Exige uma leitura para posicionar o ponteiro no primeiro registro 
         while (rst.next()) {
            Funcionario func = new Funcionario();
            func.setMatricula(rst.getInt("Matricula"));
            func.setNome(rst.getString("Nome"));
            func.setSalario(rst.getDouble("Salario"));
            func.setSexo(rst.getBoolean("Sexo"));
            func.setDepto(rst.getString("Nomed"));
            func.setCodigoDepto(rst.getInt("CodigoDepto"));
            
            grupo.add(func);
        }        
        rst.close();
        stmt.close();
        fecharConexao();
        return grupo;
    } 
    public static void incluirFunc(Funcionario func) throws Exception {
        String SQL;
        Statement stmt;
        ResultSet rst;
        abrirConexao();
        
        // pega a maior matricula do banco
        SQL = "select max(matricula) from tabfuncionario;";
        stmt = con.createStatement();
        rst  = stmt.executeQuery(SQL);
        
        // soma 1 a essa matricula
        while ( rst.next() ) {
           func.setMatricula( rst.getInt(1)+1 );
        }
        rst.close();
        stmt.close();
        fecharConexao();
        
        abrirConexao();
        SQL = "Insert Into TabFuncionario (Matricula,Nome,Salario,Sexo,CodigoDepto)Values ("+
        					func.getMatricula()+
        					",'"+func.getNome()+
                            "',"+ func.getSalario()+
                            ",'"+ Boolean.toString(func.getSexo())+
                            "',"+ func.getCodigoDepto()+")";
        stmt = con.createStatement();
        stmt.executeUpdate(SQL);
        stmt.close();
        fecharConexao();
    }
    public static void alterarFunc(Funcionario func) throws Exception {
        String SQL;
        Statement stmt;
        abrirConexao();
        SQL = "UpDate TabFuncionario Set "+
	      " Nome='"+ func.getNome()+	
	      "', Salario="+ func.getSalario()+
              ", Sexo ='" + func.getSexo()+
              "', CodigoDepto =" + func.getCodigoDepto()+
              " Where Matricula = " + func.getMatricula();
                                 
        stmt = con.createStatement();
        stmt.executeUpdate(SQL);
        stmt.close();
        fecharConexao();
    }

    public static void excluirFunc(Funcionario func) throws Exception {
        String SQL;
        Statement stmt;
        abrirConexao();
        SQL = "Delete * From TabFuncionario Where Matricula = " + 
						func.getMatricula();
        stmt = con.createStatement();
        stmt.executeUpdate(SQL);
        stmt.close();
        fecharConexao();        
    }
    

	
}// fim da classe
